package com.banding.datastructure;

public class LinkedListQueue<E> {
    private LinkedList<E> list;

    public LinkedListQueue() {
        this.list = new LinkedList<>();
    }

    /**
     * 将新元素加入队尾
     */
    public void enqueue(E element) {
        list.add(element);
    }

    /**
     * 查询队列元素个数
     */
    public int size() {
        return list.size();
    }

    /**
     * 判断队列是否为空
     */
    public boolean isEmpty() {
        return list.isEmpty();
    }

    /**
     * 将队首元素出队，并返回该元素
     */
    public E dequeue() {
        if (isEmpty()) {
            return null;
        }
        return list.remove(0);
    }

    /**
     * 获取队首元素，但不出队
     */
    public E front() {
        if (isEmpty()) {
            return null;
        }
        return list.get(0);
    }

    @Override
    public String toString() {
        return list.toString();
    }
}
